package com.cn.wanxi.service.impl;

import com.cn.wanxi.dao.NavDao;
import com.cn.wanxi.model.NavModel;
import com.cn.wanxi.service.INavService;
import com.cn.wanxi.util.IO;
import com.cn.wanxi.util.Path;
import com.cn.wanxi.util.PathEnum;
import com.cn.wanxi.util.Tool;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 第三阶段内容  导航信息
 * 1.根据路径和文件名去创建文件和文件夹----存数据
 * 2.写入数据到文件
 * 3.读取出来
 * 4.封装数据
 */
public class NavServiceImpl implements INavService {
    @Override
    public List<NavModel> getNavModelList() {
//        1.创建文件

        File file = IO.createFile(PathEnum.PATH.getPath(), PathEnum.FILE_NAME_NAV.getPath());
//        2.写入数据
        List<String> array = getDaoData();
        IO.write(array, file);
//        3.读取数据
        String result = IO.readNote(file);
        System.out.println(result);
        List<NavModel> navModelList = setNavModelList(result);
        return navModelList;
    }

    /**
     * 根据读取出来的数据封装成list
     */
    private List<NavModel> setNavModelList(String result) {
        List<NavModel> list = new ArrayList<>();
        String[] results = result.split(PathEnum.SPLIT.getPath());
//        String href = results[0];
        String href = Tool.replace(results[0]);
//        字符串转换为数组
        String[] hrefs = href.split(",");
//
//        for (String temp:hrefs
//             ) {
//            System.out.println(temp);
//        }
//        String title = results[1];
        String title = Tool.replace(results[1]);
        String[] titles = title.split(",");
        int length = hrefs.length;//计算集合的长度
        for (int i = 0; i < length; i++) {
            NavModel navModel = new NavModel();
            navModel.setTitle(titles[i]);
            navModel.setHref(hrefs[i]);
            list.add(navModel);
        }
        return list;
    }

    private List<String> getDaoData() {
        List<String> list = new ArrayList<>();
        NavDao navDao = new NavDao();
//        需要讲数组或集合转换为字符串进行
        list.add(navDao.getHrefs().toString());
        list.add(Arrays.toString(navDao.getTitles()));
        return list;
    }

    public static void main(String[] args) {
        new NavServiceImpl().getNavModelList();
    }
}
